#include "answer.h"

Answer::Answer()
{

}

QString Answer::Cate()
{
    return "简答";
}

int Answer::Review(QString ans)
{
    // 判断是否有答案，防止除0错误
    if(this->m_res.isEmpty()) return 0;

    QStringList resLst = this->m_res.split(" ");//将 m_res 字符串使用空格分割成一个字符串列表 resLst
    int cnt = 0;

    foreach(auto str, resLst)//使用 foreach 循环遍历 resLst 中的每个字符串，并检查它是否包含在 ans 中
    {
        if(ans.contains(str))//如果包含，则增加计数器 cnt 的值
            cnt++;
    }

    return int(cnt * this->m_score / resLst.size());//返回 cnt 乘以 m_score 除以 resLst 的大小，并将结果转换为整数
}

void Answer::Save()
{
    QFile file(this->m_title.left(10));
    file.open(QIODevice::ReadOnly | QIODevice::WriteOnly);//只读的方式打开

    file.write(this->m_title.toUtf8() + "\n");//将 m_title 字符串的UTF-8编码写入文件，并在末尾添加一个换行符
    file.write(this->m_res.toUtf8() + "\n");//将 m_res 字符串的UTF-8编码写入文件，并同样添加一个换行符
    file.write(this->Cate().toUtf8() + "\n");//将 Cate() 函数返回的字符串的UTF-8编码写入文件，并添加一个换行符
    file.write(QString::number(this->m_score).toUtf8() + "\n");//将 m_score 的数值转换为字符串，再将其UTF-8编码写入文件，并添加一个换行符

    file.close();                       //关闭文件对象
}
